#include "NetFrameImplFactory.h"


#include "Impl.h"
#include "AsioImpl.h"

namespace frame {

NetFrameImplFactory &NetFrameImplFactory::instance(){
    static NetFrameImplFactory __instance;
    return __instance;
}

ImplFactory::Ptr NetFrameImplFactory::create(NetFrameImplType impType){
    switch(impType){
        case  MOCK:{
            return std::make_shared<impl::asio::AsioImplFactory>();
        }
        case ASIO:{
            return std::make_shared<impl::asio::AsioImplFactory>();
        }
        case EASY:{
            return std::make_shared<impl::asio::AsioImplFactory>();
        }
        default:{
            return std::make_shared<impl::asio::AsioImplFactory>();
        }
    }
}

} //end of namespace frame
